package users;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;

import org.apache.commons.io.IOUtils;
import org.apache.struts2.ServletActionContext;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

import Entidades.Campeonato;
import Entidades.Equipo;
import Entidades.Partido;
import Managers.CampeonatosManager;
import Managers.EquiposManager;
import Managers.PartidosManager;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.opensymphony.xwork2.ActionSupport;


public class UserAction extends ActionSupport {
	private ArrayList partidos; 
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	public UserAction(){
		
	}
	
	@Override
	public String execute() throws Exception {
		getPartidos();
		HttpServletRequest servletRequest = ServletActionContext.getRequest();
		
		PartidosManager pm = new PartidosManager();
		Partido nuevo = new Partido();
		
		nuevo.setCampeonato(servletRequest.getParameter("campeonato"));
		nuevo.setEquipo1(servletRequest.getParameter("equipo1"));
		nuevo.setEquipo2(servletRequest.getParameter("equipo2"));
		nuevo.setFechaPartido(servletRequest.getParameter("fechaPartido"));
		nuevo.setHorarioPartido(servletRequest.getParameter("horaPartido"));
		
		
		if (pm.agregarPartido(nuevo) ){
			return SUCCESS;			
		}else{
			return ERROR;
		}
	}
	
	private void getPartidos(){
		Gson gson = new GsonBuilder().disableHtmlEscaping().create();
		PartidosManager pm = new PartidosManager ();
		
		partidos = new ArrayList();
		JSONObject partidoObj;
		JSONArray partidosJSONArray = pm.obtenerPartidos();
		JSONObject partidos_result = new JSONObject();
        Iterator<String> partido = partidosJSONArray.iterator();
        try {
        	while (partido.hasNext()) {
        		String partidoJson = partido.next();
        		Partido e = gson.fromJson(partidoJson, Partido.class);
        		partidos.add(e);
        		partidos_result.put(e.getId(),e);

        	}
			
		} catch (Exception e) {
			e.printStackTrace();
		}
        System.out.println("Partidos en admin: " + gson.toJson(partidos));
	}
	
	public String agregarEquipo() {
		
		HttpServletRequest servletRequest = ServletActionContext.getRequest();
		
		Equipo nuevo = new Equipo();
		
		nuevo.setNombre(servletRequest.getParameter("nombre"));
		
		EquiposManager em = new EquiposManager();
		
		
		if (em.agregarEquipo(nuevo)){
			return SUCCESS;			
		}else{
			return ERROR;
		}
	}
	
	public String agregarCampeonato(){
		
		HttpServletRequest servletRequest = ServletActionContext.getRequest();
		
		Campeonato nuevo = new Campeonato();
		
		System.out.println("Equipo nombre "  + servletRequest.getParameter("nombre"));
		nuevo.setNombre(servletRequest.getParameter("nombre"));
		
		CampeonatosManager em = new CampeonatosManager();
		
		if (em.agregarCampeonato(nuevo)){
			return SUCCESS;			
		}else{
			return ERROR;
		}
	}
	

}
	

	